Три роки в МВС
Вітаю!
Вам пише Максим Сохацький, автор "МІА: Документообіг". Хотів вам повідомити, що всі зобов'язання взяті на себе перед МВС я виконав успішно, моя система впроваджена в ГСЦ, ІНФОТЕХ, ДСНС, ЄРЗ та найголовніше вже 3 тижні як в головному офісі МВС.
Я не хочу себе "продавати" і забирати у вас багато часу, лише хотів сказати, що моя трирічна кар'єра в ІНФОТЕХ остаточно завершена та я активно шукаю всяку роботу та проходжу співбесіди аби вижити у цей складний час.
Маю надію, що вас зацікавить ця інформація та мрію про натхненну і плідну співпрацю над цікавими державними інфраструктурними проектами.
З повагою, Максим Сохацький.
Звіт за три роки роботи
Передісторія
Аби підсумувати, що було створено потрібно розказати про історію розвитку продукту та його контекст.
Все почалося в 2019 році після мого повернення з Болгарії, куди я переводив промислові потужності компанії NYNJA в процесі звільнення харківського офісу. Я сидів літом і займався подальшою розробкою ERP/1 після своїх великих впроваджень в ПриватБанк (Система Депозити) та NYNJA (месанжер на N2O/BPE/MQTT) — я писав свій докторський дисертаційний проект.
До мене звернувся Ігор Павлович Городецький, директор департамента ДП "ІНФОТЕХ" через викладача КПІ Костянтина Носова. Виявилось, що ісламо-комуніст Тимур Шемседінов, який відомий своїми антидержавницьми позиціями, якого МВС запросило помогати Ігорю Городецькому та розвивати продукти компанії не справився з завданням та звільнився з компанії разом зі студентами КПІ. У світлі цього неприємного репутаційного інциденту як для компанії ІНФОТЕХ так і для МВС у цілому, розмова була побудована таким чином, що я сам повинен прийти в компанію і домовитьсь з директором компанії про подальшу співпрацю, аби замінити попередньо запрошеного архітекора.
В процесі серії наших співбесід в офісі (2019), у якості демонстраційного проекту ERP/1 був показаний прототип Warehouse Management System (WMS). У якості довготривалого продукту-завданя, який мені дали став "МІА: Документообіг", так як існуюча система ІТ-ENTERPRISE, створена ТОВ НВП «Інформаційні технології» не в повній мірі задовільняла МВС. Я погодився. Цей мій вибір був не випадковий, адже в мене є досвіт розробки саме систем документообігу для міжнародного ринку в компаній International Land Systems (2003), Inc. (зараз Thompson Routers). Наші замовники на той час були кадастрові департаменти міністерств Ямайки, Азербайджана, Египта (всьо державницькі проекти). Там я теж писав все: від сканування до Workflow рушіїв та маніпуляції з Word файлами (магістерська дисерація).
Мене представили в компанії як керівника напрямку документообігу компанії, а також представили на нараді серед генералів МВС в академії МВС, анонсувавши перехід на нову систему Документообігу після ІТ-МАСТЕР. Нова система вже повинна була бути виконана по технічному завданню МВС, яке передбачає впровадження Документообігу у всі шість підрозділів МВС.
Перша версія інтерфейсу
Для побудови першої команди мною був запрошений Олександр Пальчиковський (співавтор МІА: Документообіг), який вже мав певний досвід роботи на промислових підприємствах та в області бухгалтерсього обліку та складських систем. Далі через Костянтина Носова були запрошені ще 2 Elixir програміста. За перший період (який співпадає з першим моїм власним авторським дизайном SYNRC.CSS) був створений наступний MVP. Власне з ним ми ходили і показували переваги майбутної системи в НПУ, ГСЦ, МВС, концепція сторінок веб-інтерфейсу, тощо.




Після побудови протопиу я перейшов до ретельного планування усіх аспектів документообігу, серед яких такі речі як відображення Word файлів, СЕВ ОВВ 2.0 протокол взаємоєдії систем документообігу, скануваня зображень тощо.




Коли прототип отримав більше менш стабільний стан, який можна було використовуваи для предпродажних демонстрацій, він вмів вже завантажувати файли, мав 4-рівнену систему: 1) файл, 2) документ, 3) процес, 4) рмк; та був готовий до наступного вже промислового провадження та інших компонент Документообігу. Так як і Депозити ПриватБанк, МІА: Документообіг здатен працювати у своїй WEB SPA весії на всіх основних операційних системах: Windows, Linux та Mac. Це в сутності те, що називається АЛЬФА версією продукту для внутрішньої демонстрації та захисту на технічних нарадах перед компанією.
Ліценції
Після побудови ALPHA MVP постало питання про отримання усіх необхідних ліцензій. В першу чергу це ліцензія на СЕВ ОВВ 2.0 та КСЗІ рівня Г2, що є необхідними пререквізитами держаних продуктів. Сертифікація СЕВ ОВВ 2.0 доволі тривалий процес, спочатку потрібно написати конектор використовуючи SOAP/WSDL протокол, пройти його в телефонному режимі, а потім після впровадження продукту виконати цю саму сертифіукацію, але вже на площадці впровадженого інстанса. СЕВ ОВВ конектор був много написаний за 2 тижні, а також я скоротив процес ліцензування написавши робота, який за 5 хв проходив сертифікацію в СЕВ ОВВ, автоматизуючи процес перевірки протоколу зі сторони клієнту:
def certify() do
{:incoming, []} = SEV.inbox @to
{:incoming, []} = SEV.inbox @from
x = outgoing @from, @to
:timer.sleep(60000)
SEV.download_all @to
:timer.sleep(60000)
acks @to, @from, x
:timer.sleep(120000)
SEV.download_all @from
:timer.sleep(60000) # 20 + 20
y = replies @to, @from, x
:timer.sleep(120000)
acks @from, @to, y
:timer.sleep(120000)
SEV.download_all @to
:timer.sleep(60000)
SEV.download_all @from
end
def outgoing(from, to) do
{i, a, g, e} = {:sev.guid(), :sev.guid(), :sev.guid(), :sev.guid()}
SEV.send(from, to, testInformation(i))
SEV.send(from, to, testApproval(a))
SEV.send(from, to, testGeneralization(g))
SEV.send(from, to, testExecutionTask(e))
{i, a, g, e}
end
def acks(from, to, mem) do
:erlang.tuple_to_list(mem)
|> Enum.map(fn guid ->
SEV.ack(from, to, guid, 1)
SEV.ack(from, to, guid, 2)
SEV.ack(from, to, guid, 3, "OK")
SEV.ack(from, to, guid, 4)
end)
end
def replies(from, to, {i, a, g, e}) do
{ni, na, nr, ng, ne} = {:sev.guid(), :sev.guid(), :sev.guid(), :sev.guid(), :sev.guid()}
SEV.send(from, to, testInformation(ni, i))
SEV.send(from, to, testApproval(na, a))
SEV.send(from, to, testReject(nr, a))
SEV.send(from, to, testGeneralization(ng, g))
SEV.send(from, to, testExecutionTask(ne, e))
{ni, na, nr, ng, ne}
end
Також я є автором розширеного протоколу НПА для СЕВ ОВВ 2.0, що стосується multiparty нормативно-правових актів, які циркулуються між КМУ та іншими інфраструктурними законодавчими ЄДРПО.




Не дивлячись на те, що я подавався на відповідність по КСЗІ на рівень Г5, спеціалістів в Україні, які здатні видати ліцензію на математичну коректність трансформацій в системі, не існує, тому система отримала гриф Г2. Це мініміально необхідний гриф для роботи в держструктурах.
Демо-версія 1.2.0, Лютий 2020
* Можливість створення, редагування та пошуку 13 видів документів
* Номенклатура документів та правила нумерації
* Підтримка 5 видів ділопроцесів
* Підтримка робочого місця реєєстратора документів
* Базова підтримка журналів
* Делегація функції для керівників та підлеглих
* Три організаційні структури: ІНФОТЕХ, МВС, ГСЦ
* Завантаження та редагування цифрових документів doc, docx, pdf
* Підтримка OnlyOffice
* Підтримка та сертифікація СЕВ ОВВ 2.0

Друга версія інтерфейсу
Після завершення стратегії впровадження та під тиском керівництва було вимушене впровадження в ГСЦ для апробації, чи здатна ця система ємністно витримати навантаження МВС. Об'єктивно система мала багато багів, так як начальник відділу впровадження та супровіду не справився з завданням та був звільнений. Крім того, саме в той час почалась криза яка тривала до мого звільнення. Мене звинувачули у всьому: 1) поганий менеджмент, 2) висока заробітня платня, 3) невміння керувати проектами, 4) табуїзована лексика на роботі, 5) відсутність в офісі, 6) нерозуміння чим я займаюся. Навіть звонили моїй дружині аби вплинути на мене, і заставити мене відмовитися від проекту та переписати динамічний віртуальний грід на TypeScript та React. Тоді вже стало ясно, що це всьо може закінчиться погано, то ж я написав листа на ім'я директора де попросив звільнити мене у випадку, якщо ці претензії правомірні.
Але роботи було багато і до нас у якості інтерна влаштувався Іван Кулик, який привів з собою своїх однокурсників з ФІОТ КПІ. Іронія долі полягала в тому, що це були учні Тимура Шемседінова, хоча вони запевняли свою зневагу до нього. Для створення другої версії веб інтерфейсу я запросив свого друга і дуже відому людину у світі анімацій та CSS — Юрія Артюха та його компанію riverco.de. Довелося ще трохи пропрацювати аби довести справу до цінця.
Саме ця версія стала першим впровадженням МІА: Документообіг в ГСЦ. Головним аргументом у мому протистоянні з невіглаством було те, що системи, побудовані на SQL/TypeScript, можуть одночасно використовувати максимум 1000 з'єднань-клієнтів для комфортної роботи, у той час як моя система побудована на DHT інтерфейсі для RosckDB, Cassandra та інших здана оперувати сотнями тисяч документів на одному інстансі, що підтверджує попереднє відео: на ньому ви бачите швидкість передачі повідомлень по WebSocket каналі між веб сторінкою та сервером, кожне з яких це складна форма яка будується з метаінформації а містить як клієнтські так і серверні валідідації. Тут немає мемоїзації на клієнті — усе відбувається в реальному часі між клієнтом та сервером, де рендеряться HTML спіппети. Якшо ви пишете на vue.js, Flutter з вілідаціями, можете перевірити і порівняти швидкість мого тракта і вашого. Десь навіть міряли JSON vs BERT і вийшло, що Erlang протокол в складі N2O швидший ніж JSON у фреймворку Phoenix.
Версія 2.4.4 ГСЦ, Квітень 2021
* Сканування Dynamsoft
* Звітність Stimulsoft
* Ієрархічні резолюції
* Оновлена РМК, скорочення прізвищ
* Багатовіконний режим рецензування
* Друк наліпок на оригіналі документу
* Накладення QR коду та баркоду підпису
* Версії додатків
* Інформаційний лист
* Шаблони документів та резолюцій
* Режим редагування документів Word
* Швидкий PDF переглядач
* Імпорт індексу штатних розділів ГСЦ
* Делегування прав
* Механізм оновлення бази
* Оновлений пошук з ABAC розмежуванням фільтрів
* Організаційно-розпорядний документ
* Пул реєстраторів для редагування приміток перед відправкою на зберігання
* Послідовне погодження
* Фільтр реєстрації документів на основі правил ABAC
Третя версія інтерфейсу
Для треьої версії інтерфейсу я провів співбесіду і запросив на роботу Валерія Каленюка, який розробляв третю версію інтерфейсу. Разом з цим ми почати формувати лінійну похідних творів на базі Документообіг, так як всі BPMN рушії (KitSoft) які були куплені та запропоновані ДП "ІНФОТЕХ" не знайшли застосування в реєстрових задачах протягом року. Завдяки новому дизайнеру ми змогли задовільнити більшість вимог МВС до графічного інтерефейсу, чим закрили повністю це питання.




Сканування
Однак щодо системи сканування було відкрито питання субліцензування. Як ви знаєте основною моєю метою було усунення усіх суб-ліцензій аби володіння продуктом та всіма його компонентами було в Open Source. З огляду на дорогі рішення в галузі крос-платформенного сканування, як то LEADtools, та DynamSoft які пропонувалося долучити до складу системи МІА: Документообіг, я відмовився і написав свій Open Source продукт для системи сканування.
Ця система написана на C#/F# та компілюється на будь-якій Windows машині без необхідності ставити Visual Studio чи Visual Studio Code. Я присвятив детальний пост, як я викинув всі сисеми сканування і написав свою:

Крім того, ця система працює на F# WebSocket сервері (100 рядків), який я написав спеціально для системи сканування на .NET.
Шаблони та репорти
Шаблонізація DOCX файлів на платформах, що не базуються на віртуальних машинах Mono та CLR вимагає або зовнішнього апплікейшин сервера, але у своєму випадку я вирішив викрутитися і написати просту консольну утіліту на F#, як у розмічені DOCX файли підставляє параметри з командного рядка та CSV файлів. Пізніше ця технологія була масштабована і на систему звітності, що дозволило нам викинути ще одну білоруську суб-ліцензію Stimulsoft.
Ринок МІА:Документообіг
Що стосується фінінсових показників компанії які базуються на продажах мого продукту, то на сьогоднішній час він вже сягає 4 мільйонів гривень на Прозорро. Це не багато, але сюди не включені проекти на десятки мільйонів як ЄРЗ (Єдиний реєстр зброї МВС) та СУСЗЦЗ (Система управління силами та засобами ДНСН) у складі якою використовуються спеціалізовані конфігурації МІА: Документообіг.
Послуги з навчання по типових процесах комп’ютерної програми «МІА:Документообіг» користувача ролі «Користувач» | 540 000,00 |
Послуги з базового впровадження комп'ютерної програми - Система електронного документообігу "МІА:ДОКУМЕНТООБІГ" | 48 000,00 |
Постачання програмної продукції (комп’ютерна програма «МІА:ДОКУМЕНТООБІГ») | 199 000,00 |
Послуги з розвитку (доопрацювання/розробки) програмного забезпечення «МІА: Документообіг» (ДК 021:2015 72262000-9 «Послуги з розробки програмного забезпечення)» | 1 819 666,66 |
Ліцензія клієнтського доступу з базовими правами комп'ютерної програми "МІА:Документообіг" | 47 300,00 |
Ліцензія клієнтського доступу з базовими правами (User CAL) комп'ютерної програми «МІА:Документообіг» | 19 000,00 |
Послуги з технічної підтримки, що включають права на отримання змін та оновлень серверних компонентів комп'ютерної програми «МІА:Документообіг» | 16 320,00 |
Ліцензія на використання комп'ютерної програми МІА:ДОКУМЕНТООБІГ | 49 400,00 |
Інформаційні послуги з передачі практичних навичок роботи з компютерною програмою "МІА:ДОКУМЕНТООБІГ" | 21 600,00 |
Послуги з онлайн консультацій по типовим процесам комп'ютерної програми - Система електронного документообігу "МІА:ДОКУМЕНТООБІГ" | 46 800,00 |
Послуги з базового впровадження комп'ютерної програми - Система електронного документообігу "МІА:ДОКУМЕНТООБІГ" | 48 000,00 |
Навчальні засоби | 36 000,00 |
Послуги з налаштування та моделювання додаткових бізнес процесів комп'ютерної програми - Система електронного документообігу "МІА:ДОКУМЕНТООБІГ" | 49 380,00 |
Пакет програмного забезпечення для створення документів | 47 200,00 |
Ліцензії на використання Програмної продукції | 49 400,00 |
Послуги з розширеного впровадження комп’ютерної програми «МІА:Документообіг» | 120 000,00 |
Послуги по проведенню тестування системи електронного документообігу | 35 354,86 |
Послуги з розширення користувацького доступу комп’ютерної програми «МІА:Документообіг» (ліцензія користувача (EULA) | 132 000,00 |
Послуги з навчання по типових процесах комп’ютерної програми «МІА:Документообіг» користувача ролі «Користувач» | 540 000,00 |
Постачання програмної продукції (комп’ютерна програма «МІА:ДОКУМЕНТООБІГ») | 199 000,00 |
Послуги у сфері розвитку Інтернету | 49 900,00 |
Публікації в робочому журналі
2019-09-26 Планувальник бізнес-процесів
2019-10-09 NITRO: comboLookup
2020-01-08 Новий ролаут N2O для 2020 року
2020-02-03 Кваліфікований Електронний Підпис
2020-10-30 NITRO: Таблиці
2021-01-04 F# WebSocket Server
2021-08-09 TWAIN 2: Д'Артаньян 20 лет спустя
2021-11-01 Частина 1. Вступ
2021-11-03 Частина 2. Структура
2021-11-04 Частина 3. Ланцюжки
2021-11-11 Частина 4. Сховище
2021-11-21 Частина 5. Логіка
2021-11-26 Частина 6. Приклади
2021-11-26 Частина 7. Модель
2021-11-26 Новий ролаут N2O для 2022 року
2022-04-02 Як робити сайти для воєнного часу
2022-05-03 Quadstellar X299
2022-06-06 BE: Binary Editor
2022-08-08 Перша Державна система
2022-11-01 EXO: Структура веб-фреймворку на прикладі
2023-02-01 FormalTalk-23: ERP /1 Compiler
2023-03-06 Salesforce Apex vs Synrc FormalTalk
Масшатбування продукту та реєстрові системи
Документація
Що стосується документації то за 3 роки жоден співробітник не долучився до документації по бібліотекам ERP.UNO та SYNRC, скоріше навпаки, всьо шо я зустрачав на своєму шляху це був суцільний саботаж. Я так і не зміг пояснити важливість документації для Open Source продуктів, тому робив усе це з власної ініціативи.
Незважаючи на це мені вдалося в січні завершити прототип інструкції користувача в поліграфічному форматі, як для співробтниців МВС так і для всіх користувачів, котрим цікаво як Сохацький веде документацію по своїм продуктам.
Посвята
Присвячую МІА: Документообіг Денису Монастирському, всім Героям МВС, а також всім держслужбовцям України.
